﻿using System;
using System.Windows.Forms;
using Badge_Manager.View;
using BadgeManager.Controller;
using BadgeManager.Model;

namespace Badge_Manager
{
    public partial class frmMain : Form
    {
        public static frmMain MainRif;

        public Utente User { get { return user; } }

        private Utente user;
        private ctrlUtente ctrlUtente;
        private bool Sbloccato;
        public Azienda azienda;

        public frmMain(Utente entry)
        {
            MainRif = this;
            InitializeComponent();
            user = entry;
            azienda = new Azienda();
            ctrlUtente = new ctrlUtente();
            Sbloccato = false;

            //controllo se il software è stato attivato
            Attivazione();
            if (!Sbloccato)
            {
                DialogResult scelta = MessageBox.Show("Il software non ha una licenza valida. Hai una licenza valida da inserire?"
                    , "", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
                if (scelta == System.Windows.Forms.DialogResult.Yes)
                {
                    frmAttivazioneSoftware frm = new frmAttivazioneSoftware();
                    DisabilitaTuttiControlliLicenzaNonValida();
                    frm.MdiParent = this;
                    frm.Show();
                }
                else
                {
                    Application.Exit();
                }
            }
            //fine..****

            if (user != null)
                lblUserLogged.Text = "Utente loggato: " + user.NomeUtente;
            else
                AbilitaControlli(false);
            this.CaricaLogo();
            this.Start();
        }

        private void DisabilitaTuttiControlliLicenzaNonValida()
        {
            menu.Enabled = false;
            tbInserisciAlunni.Enabled = false;
            tbRicercaUtenti.Enabled = false;
            tbCorsi.Enabled = false;
            tbTessere.Enabled = false;
            PersonaStripButton.Enabled = false;
            ElencoPersoneStripButton.Enabled = false;
            tbNuovoAccount.Enabled = false;
        }

        private void CaricaLogo()
        {
            ctrlAzienda cAzienda = new ctrlAzienda();

            azienda = cAzienda.Seleziona();
            //Image tmp = Image.FromStream(new ctrlAzienda().GetLogo());
            //if (azienda != null && tmp != null)
            //    this.picLogo.Image = tmp;
        }

        private void Attivazione()
        {
            if (!ControllaAttivazione())
                Sbloccato = false;
            else
                Sbloccato = true;
        }

        private bool ControllaAttivazione()
        {
            AttivazioneSoftware a = new AttivazioneSoftware();
            if (!a.SoftwareAttivo())
                return false;
            else
                return true;
        }

        private bool ControllaPermessi()
        {
            if (user != null)
            {
                ctrlUtente cUtente = new ctrlUtente();
                if (cUtente.isSuperAdmin(user) == false && user != null)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            else
            {
                return true;
            }
        }

        private void AbilitaControlli(bool valore)
        {
            switch (valore)
            {
                case true:
                    menu.Enabled = true;
                    break;
                case false:
                    menu.Enabled = false;
                    tbInserisciAlunni.Enabled = false;
                    tbRicercaUtenti.Enabled = false;
                    tbCorsi.Enabled = false;
                    tbTessere.Enabled = false;
                    PersonaStripButton.Enabled = false;
                    ElencoPersoneStripButton.Enabled = false;
                    break;
            }
        }

        //caricare quì tutto ciò che si carica al load della form
        private void Start()
        {
            this.Text += " [" + Application.ProductVersion + "]";
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
        }

        private void esciToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void disconnettiToolStripMenuItem_Click(object sender, EventArgs e)
        {
        }

        private void tesseraToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter fruire di questa funzione");
                return;
            }
            frmElencoTessere frm = frmElencoTessere.Istance(user);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
            frm.Focus();
        }

        private void corsoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter fruire di questa funzione");
                return;
            }
            frmElencoCorsi frm = frmElencoCorsi.Istance(user);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
            frm.Focus();
        }

        private void tbNuovoAccount_Click(object sender, EventArgs e)
        {
            creaNuovoToolStripMenuItem_Click(this, e);
        }

        private void elencoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter fruire di questa funzione");
                return;
            }
            frmElencoUtenti frm = new frmElencoUtenti(user);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
            frm.Focus();
        }

        private void creaNuovoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter amministrare gli account");
                return;
            }
            frmNuovoUtente frm = new frmNuovoUtente(user);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
            frm.Focus();
        }

        private void tbInserisciAlunni_Click(object sender, EventArgs e)
        {
            if (!(ctrlUtente.PuoModificare(user) ||
                    ctrlUtente.PuoScrivere(user) || ControllaPermessi()))
            {
                MessageBox.Show("Non hai accesso a Questa Funzione", "Attenzione!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            frmAggiungiAlunni frm = new frmAggiungiAlunni(user, StatoForm.Nuovo, null);
            if (frm.IsDisposed == true)
                return;
            frm.Top = 20;
            frm.Left = 20;
            frm.MdiParent = this;
            frm.Show();
            frm.Focus();
        }

        private void tbRicercaUtenti_Click(object sender, EventArgs e)
        {
            elencoToolStripMenuItem_Click(this, e);
        }

        private void tbCorsi_Click(object sender, EventArgs e)
        {
            corsoToolStripMenuItem_Click(this, e);
        }

        private void stanzeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter fruire di questa funzione");
                return;
            }
            frmAule frm = new frmAule(user, StatoForm.Nuovo);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
            frm.Focus();
        }

        private void vediMovimentiTessereToolStripMenuItem_Click(object sender, EventArgs e)
        {
        }

        private void attivitàToolStripMenuItem_Click(object sender, EventArgs e)
        {
        }

        private void personaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter fruire di questa funzione");
                return;
            }
            frmElencoPersone frm = frmElencoPersone.Istance(user);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
            frm.Focus();
        }

        private void PersonaStripButton_Click(object sender, EventArgs e)
        {
            if (!(ctrlUtente.PuoModificare(user) ||
                    ctrlUtente.PuoScrivere(user) || ControllaPermessi()))
            {
                MessageBox.Show("Non hai accesso a Questa Funzione", "Attenzione!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            frmAggiungiPersona aggiungi = new frmAggiungiPersona(StatoForm.Nuovo, null);
            aggiungi.Left = 20;
            aggiungi.Top = 20;
            aggiungi.MdiParent = this;
            aggiungi.Show();
            aggiungi.Focus();
        }

        private void opzioniToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter fruire di questa funzione");
                return;
            }
            frmOpzioni frm = new frmOpzioni(user);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
            frm.Focus();
        }

        private void nuovaAttivitàToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ctrlUtente cUtente = new ctrlUtente();
            if (!cUtente.PuoLeggere(user))
            {
                MessageBox.Show("Non hai i permessi per utilizzare questa funzione");
                return;
            }
            frmAttivita frm = new frmAttivita(user, StatoForm.Nuovo, null, null);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
            frm.Focus();
        }

        private void elencoToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter fruire di questa funzione");
                return;
            }
            frmElencoAttivita frm = new frmElencoAttivita(user);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
        }

        private void tbTessere_Click(object sender, EventArgs e)
        {
            tesseraToolStripMenuItem_Click(null, null);
        }

        private void ElencoPersoneStripButton_Click(object sender, EventArgs e)
        {
            personaToolStripMenuItem_Click(null, null);
        }

        private void vediStoricoEntrateToolStripMenuItem_Click(object sender, EventArgs e)
        {
        }

        private void tesseraSmarritaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmTesseraMancante frm = new frmTesseraMancante(user);
            frm.MdiParent = this;
            frm.Show();
        }

        private void registroAccessiErratiToolStripMenuItem_Click(object sender, EventArgs e)
        {
        }

        private void orizzontaleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.LayoutMdi(MdiLayout.TileHorizontal);
        }

        private void verticaleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.LayoutMdi(MdiLayout.TileVertical);
        }

        private void aCascataToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.LayoutMdi(MdiLayout.Cascade);
        }

        private void chiudiTutteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            foreach (Form frm in this.MdiChildren)
                frm.Close();
        }

        private void registroAccessiErratiToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter fruire di questa funzione");
                return;
            }
            frmAccessiErrati frm = new frmAccessiErrati();
            frm.MdiParent = this;
            frm.Show();
        }

        private void abilitaDisabilitaTessereToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ctrlUtente cUtente = new ctrlUtente();
            if (!cUtente.PuoLeggere(user))
            {
                MessageBox.Show("Non hai i permessi per utilizzare questa funzione");
                return;
            }
            frmAbDisabTessera frm = new frmAbDisabTessera(user, null);
            frm.MdiParent = this;
            frm.Show();
        }

        private void pannelloDiControlloToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmPannelloControllo frm = new frmPannelloControllo(user);
            frm.MdiParent = this;
            frm.Show();
        }

        private void aziendaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ctrlUtente cUtente = new ctrlUtente();
            if (!cUtente.PuoLeggere(user))
            {
                MessageBox.Show("Non hai i permessi per utilizzare questa funzione");
                return;
            }
            frmAzienda frm = new frmAzienda();
            frm.MdiParent = this;
            frm.Show();
        }

        private void disconnettiToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            nuovaAttivitàToolStripMenuItem_Click(sender, e);
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            elencoToolStripMenuItem1_Click(sender, e);
        }

        private void iinformazioniSuToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmAbout frm = new frmAbout(this);
            frm.ShowDialog();
        }

        private void tbWizard_Click(object sender, EventArgs e)
        {
            if (!(ctrlUtente.PuoModificare(user) ||
                ctrlUtente.PuoScrivere(user) || ControllaPermessi()))
            {
                MessageBox.Show("Non hai accesso a Questa Funzione", "Attenzione!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            frmWizard frm = new frmWizard();
            frm.MdiParent = this;
            frm.Show();
        }

        private void creazioneGuidataToolStripMenuItem_Click(object sender, EventArgs e)
        {
            tbWizard_Click(sender, e);
        }

        private void storicoAccessiToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter fruire di questa funzione");
                return;
            }
            frmStoricoEntrate frm = new frmStoricoEntrate(user);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
        }

        private void movimentiTessereToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!ControllaPermessi())
            {
                MessageBox.Show("Non hai i permessi per poter fruire di questa funzione");
                return;
            }
            frmMovimentiTessera frm = frmMovimentiTessera.Istance(user);
            frm.MdiParent = this;
            frm.Left = 20;
            frm.Top = 20;
            frm.Show();
            frm.Focus();
        }
    }
}